﻿using System;
using RDev.Correios.Entity;

namespace RDev.Correios
{
    public class CalcularFreteCorreios
    {
        public CalcPrecoPrazo.cResultado ConsultaWebServiceCorreios(CalcularFrete calcularFrete)
        {
            try
            {
                string LblPrazoEntrega = null;
                string nuCep = calcularFrete.NuCepOrigem;
                string LblMensagem = null;

                // Dados da empresa, se tiver contrato com os Correios

                string nCdEmpresa = string.Empty;

                string sDsSenha = string.Empty;

                // Código do tipo de frete - por padrão deixei o SEDEX

                string nCdServico = calcularFrete.Servico.ToString();

                // Cep de origem e destino - apenas números

                string sCepOrigem = nuCep;

                string sCepDestino = calcularFrete.NuCepDestino.Replace(".", "").Replace("-", "").Replace("/", "");

                // Peso total da encomenda

                string nVlPeso = calcularFrete.NuPeso.ToString();

                // Formato da encomenda

                int nCdFormato = 1; //Caixa

                // Informa se é por mão própria

                string sCdMaoPropria = "N";

                // Valor declarado

                decimal nVlValorDeclarado = 0; //não informado - padrao

                // Se desejo recebr aviso de recebimento

                string sCdAvisoRecebimento = "N"; //por padrao não

                // Instancio o web-service

                CalcPrecoPrazo.CalcPrecoPrazoWSSoapClient webServiceCorreios = new CalcPrecoPrazo.CalcPrecoPrazoWSSoapClient();

                // Efetuo a requisição

                CalcPrecoPrazo.cResultado retornoCorreios = webServiceCorreios.CalcPrecoPrazo(nCdEmpresa, sDsSenha, nCdServico, sCepOrigem, sCepDestino, nVlPeso, nCdFormato, calcularFrete.NVlComprimento, calcularFrete.NVlAltura, calcularFrete.NVlLargura, calcularFrete.NVlDiametro, sCdMaoPropria, nVlValorDeclarado, sCdAvisoRecebimento);

                return retornoCorreios;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
           
        }
    }
}
